﻿using System;
using Harvest.API.Attributes;

namespace Harvest.API.Model
{

    /// <summary>
    /// 
    /// </summary>
    [SerializationInfo("project")]
    public class Project
    {

        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<active type="boolean">true</active>]]>
        /// </example>
        [SerializationInfo("active", "boolean")]
        public bool? Active { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<active-task-assignments-count type="integer">10</active-task-assignments-count>]]>
        /// </example>
        [SerializationInfo("active-task-assignment-count", "integer")]
        public int? ActiveTaskAssignmentsCount { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<active-user-assignments-count type="integer">1</active-user-assignments-count>]]>
        /// </example>
        [SerializationInfo("active-user-assignment-count", "integer")]
        public int? ActiveUserAssignmentsCount { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<basecamp-id type="integer" nil="true"></basecamp-id>]]>
        /// </example>
        [SerializationInfo("basecamp-id", "integer", IsNullable = true)]
        public int? BasecampId { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<bill-by>none</bill-by>]]>
        /// </example>
        [SerializationInfo("bill-by")]
        public string BillBy { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<billable type="boolean">false</billable>]]>
        /// </example>
        [SerializationInfo("billable", "boolean")]
        public bool? Billable { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<budget type="decimal" nil="true"></budget>]]>
        /// </example>
        [SerializationInfo("budget", "decimal", IsNullable = true)]
        public float? Budget { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<budget-by>none</budget-by>]]>
        /// </example>
        [SerializationInfo("budget-by")]
        public string BudgetBy { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<cache-version type="integer">545</cache-version>]]>
        /// </example>
        [SerializationInfo("cache-version", "integer")]
        public int? CacheVersion { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<client-id type="integer">135194</client-id>]]>
        /// </example>
        [SerializationInfo("client-id", "integer")]
        public int? ClientId { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<code>KWEB</code>]]>
        /// </example>
        [SerializationInfo("code")]
        public string Code { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<cost-budget type="decimal" nil="true"></cost-budget>]]>
        /// </example>
        [SerializationInfo("cost-budget", "decimal", IsNullable = true)]
        public float? CostBudget { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<cost-budget-include-expenses type="boolean">false</cost-budget-include-expenses>]]>
        /// </example>
        [SerializationInfo("cost-budget-include-expenses", "boolean")]
        public bool? CostBudgetIncludeExpenses { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<created-at type="datetime">2009-04-09T08:00:18Z</created-at>]]>
        /// </example>
        [SerializationInfo("created-at", "datetime")]
        public DateTime? CreatedAt { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<fees type="decimal" nil="true"></fees>]]>
        /// </example>
        [SerializationInfo("fees", "decimal", IsNullable = true)]
        public float? Fees { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<highrise-deal-id type="integer" nil="true"></highrise-deal-id>]]>
        /// </example>
        [SerializationInfo("highrise-deal-id", "integer", IsNullable = true)]
        public int? HighriseDealId { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<hourly-rate type="decimal" nil="true"></hourly-rate>]]>
        /// </example>
        [SerializationInfo("hourly-rate", "decimal", IsNullable = true)]
        public float? HourlyRate { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<id type="integer">333926</id>]]>
        /// </example>
        [SerializationInfo("id", "integer", IsNullable = true)]
        public int? Id { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<name>2008S101_Energy_FP</name>]]>
        /// </example>
        [SerializationInfo("name")]
        public string Name { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<notify-when-over-budget type="boolean">false</notify-when-over-budget>]]>
        /// </example>
        [SerializationInfo("notify-when-over-budget", "boolean")]
        public bool? NotifyWhenOverBudget { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<over-budget-notification-percentage type="decimal">100.0</over-budget-notification-percentage>]]>
        /// </example>
        [SerializationInfo("over-budget-notification-percentage", "decimal")]
        public float? OverBudgetNotificationPercentage { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<over-budget-notified-at type="date" nil="true"></over-budget-notified-at>]]>
        /// </example>
        [SerializationInfo("over-budget-notified-at", "datetime", IsNullable = true)]
        public DateTime? OverBudgetNotfiedAt { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<show-budget-to-all type="boolean">false</show-budget-to-all>]]>
        /// </example>
        [SerializationInfo("show-budget-to-all", "boolean")]
        public bool? ShowBudgetToAll { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<updated-at type="datetime">2009-12-10T11:02:55Z</updated-at>]]>
        /// </example>
        [SerializationInfo("update-at", "datetime", IsNullable = true)]
        public DateTime? UpdatedAt { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<estimate nil="true"></estimate>]]>
        /// </example>
        [SerializationInfo("estimate", IsNullable = true)]
        public string Estimate { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<estimate-by>none</estimate-by>]]>
        /// </example>
        [SerializationInfo("estimate-by")]
        public string EstimateBy { get; set; }
        
        /// <summary>
        /// 
        /// </summary>
        /// <example>
        /// <![CDATA[<notes></notes>]]>
        /// </example>
        [SerializationInfo("notes")]
        public string Notes { get; set; }

    }
}
